package com.shopping.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shopping.dto.ProductDTO;
import com.shopping.dto.ProductQueryDTO;
import com.shopping.entity.Product;

import java.util.List;
import java.util.Map;

public interface ProductService extends IService<Product> {
    /**
     * 获取商品列表（分页）
     */
    Page<ProductDTO> getProductList(ProductQueryDTO queryDTO);

    /**
     * 获取推荐商品
     */
    List<ProductDTO> getRecommendedProducts();

    /**
     * 按类型获取商品
     */
    List<ProductDTO> getProductsByType(String type);

    /**
     * 搜索商品
     */
    List<ProductDTO> searchProducts(String keyword);

    /**
     * 获取商品详情
     */
    ProductDTO getProductById(Long id);

    /**
     * 创建商品
     */
    ProductDTO createProduct(Product product);

    /**
     * 更新商品
     */
    ProductDTO updateProduct(Long id, Product product);

    /**
     * 删除商品
     */
    void deleteProduct(Long id);

    /**
     * 更新商品状态
     */
    void toggleProductStatus(Long id);

    /**
     * 设置商品推荐状态
     */
    void toggleRecommended(Long id);

    /**
     * 更新商品库存
     */
    boolean updateStock(Long productId, Integer quantity);

    /**
     * 获取商品统计信息
     */
    Object getProductStatistics();

    /**
     * 获取商品分类列表
     */
    List<Map<String, Object>> getProductCategories();
}